const rootPath  = '../../';
var request     = require(rootPath + 'common/request.js');
var common      = require(rootPath + 'common/common.js');
var config      = require(rootPath + 'common/config.js');
var options     = {
    // 数据
    data : {
        products        : [],                       // 商品列表
        loading         : false,                    // 是否加载
        currentPage     : 0,                        // 当前页
        totalPage       : 1,                        // 总的页数
        areas           : config.data.area,         // 区域
        distance        : config.data.distance,     // 距离
        age             : config.data.age,          // 年龄段
        areaIndex       : 0,
        distanceIndex   : 0,
        ageIndex        : 0,
    },

    // 监听页面加载
    onLoad : function () {
        var that = this;

        // 这里可以显示加载中的动画
        // 获取商品列表不需要登录  可以先获取位置 然后获取商品列表
        // 这里的逻辑还可优化
        if (!common.isAuthorize()) {
            request.wechatLogin().then(common.getLocation).then(that.getProductsList).catch(e => {
                console.log(e);
            });
        } else {
            common.getLocation().then(that.getProductsList).catch(e => {
                console.log(e);
            });
        }
    },

    // 当页面显示的时候可以重新加载页面 显示更多的信息
    onShow : function () {

    },

    // 处理下拉刷新
    onPullDownRefresh : function () {
        console.log(11111);
    },

    // 上拉加载更多
    onReachBottom : function() {
        let that = this;
        let data = that.data;

        // 如果正在加载中 则不能加载
        if (data.loading) {
            return false;
        }

        if (data.currentPage === data.totalPage) {
            wx.showToast({
                title   : '客官,没有了...',
                icon    : 'success',
            });
            return false;
        }

        that.getProductsList();
    },

    // 区域发生变化
    bindAreaChange : function(e) {
        this.setData({
            areaIndex   : e.detail.value,
            currentPage : 0,
        });

        this.getProductsList(true);
    },

    // 距离发生变化
    bindDistanceChange : function(e) {
        this.setData({
            distanceIndex   : e.detail.value,
            currentPage     : 0,
        });

        this.getProductsList(true);
    },

    // 年龄发生变化
    bindAgeChange : function(e) {
        this.setData({
            ageIndex    : e.detail.value,
            currentPage : 0,
        });

        this.getProductsList(true);
    },

    // 处理下拉刷新
    onPullDownRefresh : function(e) {
        // 完成之后停止刷新
        // wx.stopPullDownRefresh();
    },

    // 显示商品详情页
    showProductDetail : function(e) {
        var id = e.currentTarget.dataset.id;

        wx.navigateTo({
            url: '/pages/product/detail/detail?id=' + id,
        });
    },

    // 显示创建产品
    showCreateProduct : function(e) {
        wx.navigateTo({
            url: '/pages/product/create/create',
        });
    },

    getProductsList : function(refresh = false) {
        let that    = this;
        let app     = getApp();
        let reqData = {
            page        : ++that.data.currentPage,
            lat         : app.globalData.latitude,
            lng         : app.globalData.longitude,
            area        : that.data.areaIndex,
            distance    : that.data.distanceIndex,
            age         : that.data.ageIndex,
        };

        that.setData({
            loading : true,
        });

        wx.showToast({
            title   : '加载中...',
            icon    : 'loading',
        });

        request.getProducts(reqData).then(response => {
            if (response.data.code === 'success') {
                let result = response.data.data;

                if (result.data.length) {
                    that.setData({
                        products    : refresh ? result.data : that.data.products.concat(result.data),
                        currentPage : result.meta.pagination.current_page,
                        totalPage   : result.meta.pagination.total_pages,
                    });

                    that.setData({
                        loading : false,
                    });
                } else {
                    wx.showToast({
                        title   : '客官,并没有找到哦...',
                        icon    : 'success',
                    });
                }
            } else {
                wx.showToast({
                    title   : '加载失败!',
                    icon    : 'loading',
                });
            }
        });
    },
};

Page(options);
